import json,xlrd,os,yaml
#定义一个读数据的类，导包以后可以直接使用
class ReadData():
    # 初始化属性，所有的data文件都在同一个文件夹，只是后缀不同，可以提出公共方法便于后期直接调用
    def __init__(self):
        self.path=os.path.dirname(os.path.dirname(__file__))
    # 读excel方法
    def read_excel(self,n):
        # 打开并读取文件,并进入到指定的第n个sheet页中
        sheet=xlrd.open_workbook(self.path+'/testData/data.xls').sheet_by_index(n)
        # 获取最大的行数
        max_row=sheet.nrows
        #预设一个列表进行接收
        item_list=[]
        # 获取的第一行作为字典的key
        first_list=sheet.row_values(0)
        # 循环读取其他行的值
        for i in range(1,max_row):
            # 获取每一行的值
            row_value=sheet.row_values(i)
            # 字典推导式、zip方法组装成一个字典
            dict1=dict(zip(first_list,row_value))
            # 将字典添加到列表中
            item_list.append(dict1)
        # 返回一个列表
        return item_list

#     定义一个组装数据类型的对方方法
    def read_json(self):
# 获取文件路径
        json_path=f'{self.path}/testData/data.json'
# 打开json文件并读取
        f=open(json_path)
# 将读取的json文件转化成字典，并保存到变量内
        data=json.load(f)
# 关闭json文件
        f.close()
# 获取字典内所有的value，转化为列表
        data2=list(data.values())
# 将转化好的列表返回给调用者
        return data2

#     定义一个对方方法，读yaml文件
    def read_yaml(self):
# 获取文件的路径
        yaml_path=self.path+'/testData/data.yaml'
# 打开yaml文件并读取
        f=open(yaml_path)
# 读取文件内的数据并保存到变量内
        data=yaml.load(f,Loader=yaml.FullLoader)
        # print(data)
        # f.seek(0)
        # data1=yaml.safe_load(f)
        # print(data1)
# 关闭文件
        f.close()
# 返回组装好的数据给调用者
        return data

if __name__ == '__main__':

    rd=ReadData()
    a=rd.read_excel(0)
    print(a)
    b=rd.read_json()
    print(type(b))
    print(b)
    c=rd.read_yaml()
    print(type(c))
    print(c)